const express = require('express')
const mongoose = require('mongoose')

// 使用esay-do 这个集合
const DB_URL = 'mongodb://127.0.0.1:27017/esay-do'

const app = express()

// 创建服务

app.listen(3030, function() {
    console.log('runing at 3030')
})

// 链接MongoDB
mongoose.connect(DB_URL)
mongoose.connection.on('connected', () => {
    console.log('mongodb connected success')
})

// 定义文档模型
const User = mongoose.model('User', new mongoose.Schema({
    name: { 
        type: String,
        require: true
    },
    age: {
        type: Number,
        require: true
    }
}))

const School = mongoose.model('School', new mongoose.Schema({
    phone: {
        type: String,
        require: true
    }
}))
// 新增数据
app.get('/add', (req, res) => {
    User.create({ name: '小熊', age: 20 }, (err, doc) => {
        if (!err) {
            res.json({
                data: null,
                resultCode: 0,
                resultMsg: '新增成功'
            })  
        } else {
            console.log(err)
        }
    })
    School.create({ phone: '18996565565' }, (err, doc) => {
        console.log(doc)
    }) 
})

// 查询数据（传入过滤对象，回调函数）
app.get('/query', (req, res) => {
    User.find({}, (err, doc) => {
        if (!err) {
            res.send(doc)
        } else {
            console.log(err)
        }
    })
})

app.get('/findOne', (req, res) => {
    User.findOne({ name: '小马' }, (err, doc) => {
        if (!err) {
            res.json(doc)
        } else {
            console.log(err)
        }
    })
})

// 删除数据（传入过滤对象，回调函数）
app.get('/delete', (req, res) => {
    User.remove({ name: '小马' }, (err, doc) => {
        if (!err) {
            res.json({
                data: null,
                resultCode: 0,
                resultMsg: '删除成功'
            })
        } else {
            console.log(err)
        }
    })
})

// 修改数据 (传入过滤对象，修改对象， 回调函数 ))
app.get('/update', (req, res) => {
    User.update({ name: 'xiaoming'}, {'$set': { age: 30 }}, (err, doc) => {
        if (!err) {
            res.json({
                data: null,
                resultCode: 0,
                resultMsg: '修改成功'
            })
        } else {
            console.log(err)
        }
    })
})